package edu.neu.swc.cloud.service;

import edu.neu.swc.cloud.domain.EquipCata;
import edu.neu.swc.cloud.domain.ProductCata;

import java.util.List;

public interface CategoryService {

    /**
     * 找到所有设备类别
     * @return
     */
    List<EquipCata> findAllEqu();

    /**
     * 找到所有产品类别
     * @return
     */
    List<ProductCata> findAllPro();

    /**
     * 添加产品类型
     * @param productCata
     */
    void addProCate(ProductCata productCata);

    /**
     * 添加设备类型
     * @param equipCata
     */
    void addEquipCate(EquipCata equipCata);

    /**
     * 依据编号删除设备类别
     * @param equ_ca_id
     */
    void deleteEquCateById(int equ_ca_id);

    /**
     * 依据编号删除产品类别
     * @param pro_ca_id
     */
    void deleteProCateById(int pro_ca_id);

    /**
     * 修改产品类别
     * @param cata
     */
    void updateProCate(ProductCata cata);

    /**
     * 修改设备类别
     * @param cata
     */
    void updateEquCate(EquipCata cata);

    /**
     * 依据ID寻找设备类别
     * @param equ_ca_id
     * @return
     */
    EquipCata findEquCateById(int equ_ca_id);

    /**
     * 依据类别ID寻找
     * @param pro_ca_id
     * @return
     */
    ProductCata findProCateById(int pro_ca_id);

    /**
     * 多字段查询设备类别
     * @param equipCata
     * @return
     */
    List<EquipCata> findEquCateByCon(EquipCata equipCata);

    /**
     * 多字段查询
     * @param productCata
     * @return
     */
    List<ProductCata> findProCateByCon(ProductCata productCata);

    /**
     * 依据条件查询产品类别个数
     * @param pro_ca_name
     * @return
     */
    int getProductTypeCounts(String pro_ca_name);

    /**
     * 依据条件查询产品类别的结果
     * @param pro_ca_name
     * @param pageStart
     * @param pageSize
     * @return
     */
    List<ProductCata> findProductTypeByQuery(String pro_ca_name, int pageStart, int pageSize);

    /**
     * 依据产品类别寻找产品
     * @param pro_ca_name
     * @return
     */
    ProductCata findProCateByName(String pro_ca_name);

    /**
     * 获取满足条件的记录数目
     * @param eq_ca_name
     * @return
     */
    int getEquipTypeCounts(String eq_ca_name);

    /**
     * 获取满足条件的记录列表
     * @param eq_ca_name
     * @param pageStart
     * @param pageSize
     * @return
     */
    List<EquipCata> findEquipTypeByQuery(String eq_ca_name, int pageStart, int pageSize);

    /**
     * 依据类别名称找到设备类别
     * @param eq_ca_name
     * @return
     */
    EquipCata findEquCateByName(String eq_ca_name);
}
